package com.nf.sms.dao;

import com.nf.sms.entity.Product;

import java.util.List;

/**
 * 关于商品的 DAO 接口 - 定义关于商品信息表中相关的操作
 *
 * @author ZQX
 * @date 2024-10-12
 */
public interface ProductDao {
    /**
     * 分页查询商品信息
     *
     * @param currentPage 当前页
     * @param pageCount   每页显示的记录数
     * @return 当前页的商品列表
     */
    List<Product> selectByPage(int currentPage,
                               int pageCount);


    /**
     * 查询总记录数 - 用于计算总页数
     *
     * @return 总记录数
     */
    long selectCount();


    /**
     * 单条件查询当前页的数据
     *
     * @param currentPage 当前页
     * @param pageCount   每页显示的记录数
     * @param cond        条件
     * @return 商品列表
     */
    List<Product> selectByPage(int currentPage,
                               int pageCount,
                               String cond);

    /**
     * 条件查询总记录数 - 用于计算总页数
     *
     * @param cond 条件
     * @return 总记录数
     */
    long selectCount(String cond);


    /**
     * 动态条件查询当前页的数据
     *
     * @param currentPage 当前页
     * @param pageCount 每页记录数
     * @param product 查询条件 - 把多个条件封装到对象中传递
     * @return 商品列表
     */
    List<Product> selectByPage(int currentPage,
                               int pageCount,
                               Product product);

    /**
     * 动态条件查询总记录数 - 用于计算总页数
     * @param product 查询条件 - 把多个条件封装到对象中传递
     * @return 总记录数
     */
    long selectCount(Product product);
}
